<?php
    /**
    *   流媒体转发模块 废弃
    */
    require('../plugin/mcyt.php');

    if (!isset($_GET['id'])){
        header("HTTP/1.1 404 Not Found");
        exit('invalid parameter:id');
    }
    
    $mserver=new mserver();

    $fileurl=$mserver->getUrl($_GET['id']);
        
        $ch=curl_init();

        curl_setopt($ch, CURLOPT_URL, $fileurl);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        // 返回 response_header, 该选项非常重要,如果不为 true, 只会获得响应的正文
        curl_setopt($ch, CURLOPT_HEADER, true);
        // 是否不需要响应的正文,为了节省带宽及时间,在只需要响应头的情况下可以不要正文
        curl_setopt($ch, CURLOPT_NOBODY, true);
        

        if(isset($_SERVER['HTTP_RANGE']) && !empty($_SERVER['HTTP_RANGE'])){
            // 有range
            curl_setopt($ch,CURLOPT_RANGE,str_replace('bytes=','',$_SERVER['HTTP_RANGE']));
        }


        $file=curl_exec($ch);

        substr($file,curl_getinfo($ch,CURLINFO_HEADER_SIZE));

        curl_close($ch);
        
        $headArr = explode(';',str_replace(array("\r\n", "\r", "\n"), ";", $file));
        
        if(!isset($_SERVER['HTTP_RANGE']) || empty($_SERVER['HTTP_RANGE'])){
            // 没有range,仅发送header,直接退出,浏览器会自动重新请求,但在微信浏览器下会出现问题
            foreach($headArr as $value)
            {
                header($value);
            }
            //exit(''); //这里不能直接退出
        }
        


        // 开始获取body

        $ch=curl_init();

        curl_setopt($ch, CURLOPT_URL, $fileurl);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);  
        // 返回 response_header, 该选项非常重要,如果不为 true, 只会获得响应的正文
        curl_setopt($ch, CURLOPT_HEADER, false);
        // 是否不需要响应的正文,为了节省带宽及时间,在只需要响应头的情况下可以不要正文
        curl_setopt($ch, CURLOPT_NOBODY, false);
        if(isset($_SERVER['HTTP_RANGE']) && !empty($_SERVER['HTTP_RANGE'])){
            // 有range
            curl_setopt($ch,CURLOPT_RANGE,str_replace('bytes=','',$_SERVER['HTTP_RANGE']));
        }

        $file=curl_exec($ch);
        curl_close($ch);
        
        $etime=explode(" ",microtime());
        $etime=$etime[1];


        foreach($headArr as $value)
        {
            header($value);
        }
        header('ctime:'.strval($etime-$stime));
        
        echo $file;
        

?>